#ifndef H_NYMPHAEA_MATRICES_UNITTEST
#define H_NYMPHAEA_MATRICES_UNITTEST
/*
 * project: nymphaea
 * module: matrices::unittest
 * purpose: for matrix unittest
 * creation date: 2010-MAY-24
 * created by: kaby<entelechie@gmail.com>
 * license: GNU General Public License v3
 */

#include "nymphaea_test.h"

#include "cppunit/extensions/HelperMacros.h"

namespace nymphaea
{
namespace matrices
{

class Matrix;

class MatrixTest : public NymphaeaTest
{
	CPPUNIT_TEST_SUITE(MatrixTest);
	CPPUNIT_TEST(testSize);
	CPPUNIT_TEST(testEqual);
	CPPUNIT_TEST(testLoads);
	CPPUNIT_TEST(testDumps);
	CPPUNIT_TEST(testProduct);
	CPPUNIT_TEST(testInverse);
	CPPUNIT_TEST(testGetRow);
	CPPUNIT_TEST(testGetCol);
	CPPUNIT_TEST(testTranspose);
	CPPUNIT_TEST(testDet);
	CPPUNIT_TEST(testLUDecomp);
	CPPUNIT_TEST(testSum);
	CPPUNIT_TEST(testTransform);
	CPPUNIT_TEST(testRowToVector);
	CPPUNIT_TEST(testColToVector);
	CPPUNIT_TEST_SUITE_END();
public:
	MatrixTest();
	void setUp();
	void tearDown();
	void testSize();
	void testEqual();
	void testLoads();
	void testDumps();
	void testProduct();
	void testInverse();
	void testGetRow();
	void testGetCol();
	void testTranspose();
	void testDet();
	void testLUDecomp();
	void testSum();
	void testTransform();
	void testRowToVector();
	void testColToVector();
protected:
	Matrix* mpM1;
	Matrix* mpM2;
};

}
}
#endif
